﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace ShareIt_MVC3.Models
{
    /// <summary>
    /// User: Klasse für Benutzer von ShareIt
    /// </summary>
    public class User
    {

        // properties
        /// <summary>
        /// ID des User
        /// </summary>
        public int ID { get; set; }

        /// <summary>
        /// Username des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie einen Benutzernamen ein! ")]
        // [Remote("UsernameExists", "Account", ErrorMessage="Dieser Benutzername ist bereits vergeben!")]
        [Display(Name = "Benutzername")]
        public String Username { get; set; }

        /// <summary>
        /// Nachname des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie Ihren Nachnamen ein!")]
        [Display(Name = "Nachname")]
        public String Surname { get; set; }

        /// <summary>
        /// Vorname des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie Ihren Namen ein!")]
        [Display(Name = "Vorname")]
        public String Name { get; set; }

        /// <summary>
        /// Adresse des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie Ihre Straße und Ihre Hausnummer ein!")]
        [Display(Name = "Straße und Hausnummer")]
        public String Address { get; set; }

        /// <summary>
        /// ZIP des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie Ihre Postleitzahl ein!")]
        [Display(Name = "Postleitzahl")]
        public String ZIP { get; set; }

        /// <summary>
        /// City des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie Ihre Stadt ein!")]
        [Display(Name = "Wohnort")]
        public string City { get; set; }

        /// <summary>
        /// Email des Users
        /// </summary>
        [Required(ErrorMessage = "Bitte geben sie Ihre E-mail-Adresse ein!")]
        [DataType(DataType.EmailAddress)]
        [RegularExpression("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", ErrorMessage="Bitte geben Sie eine gültige E-Mail Adresse ein!")]
        [Display(Name = "E-Mail-Adresse")]
        public string EMail { get; set; }

        /// <summary>
        /// Passwort
        /// </summary>
        [DataType(DataType.Password)]
        [Required(ErrorMessage = "Bitte geben sie ein von Ihnen gewähltes Passwort ein!")]
        [Display(Name = "Passwort")]
        public string Password { get; set; }

        /// <summary>
        /// Passwort Bestätigung
        /// </summary>
        [DataType(DataType.Password)]
        [Display(Name = "Passwort (Bestätigung)")]
        [Compare("Password", ErrorMessage = "Die von Ihnen angegebenen Passwörter stimmen nicht überein.")]
        public string ConfirmPassword { get; set; }

        /// <summary>
        /// Active: true/false, nur aktive Benutzer können am System teilnehmen
        /// </summary>
        [Display(Name = "Account aktiv?")]
        public bool Active { get; set; }

        /// <summary>
        /// Active: true/false, Admin ja nein?
        /// </summary>
        public bool IsAdmin { get; set; }
        
        /// <summary>
        /// Anzahl der Credits
        /// </summary>
        public int Credits { get; set; }

    } // User
}
